// 如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后，短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。

// 字母和数字都属于字母数字字符。

// 给你一个字符串 s，如果它是 回文串 ，返回 true ；否则，返回 false 。

//  

// 示例 1：

// 输入: s = "A man, a plan, a canal: Panama"
// 输出：true
// 解释："amanaplanacanalpanama" 是回文串。
// 示例 2：

// 输入：s = "race a car"
// 输出：false
// 解释："raceacar" 不是回文串。
// 示例 3：

// 输入：s = " "
// 输出：true
// 解释：在移除非字母数字字符之后，s 是一个空字符串 "" 。
// 由于空字符串正着反着读都一样，所以是回文串。
// 首先用toLowerCase()和replaceAll("[^a-zA-Z0-9]","")，转换小写字母，
// 任然后用正则表达式去除特殊符号，对于这个奇数和偶数的字符串，
// while循环条件都是一样的，双指针从两边指向中间，r<l,当其不相等，用break跳出while循环。
class Solution {
    public boolean isPalindrome(String s) {
        String sr1=s.toLowerCase();
        String sr=sr1.replaceAll("[^a-zA-Z0-9]","");
        int r=0;
        int l=sr.length()-1;
        int x=0;
        while(r<l){
            if(sr.charAt(r)!=sr.charAt(l)){
                x=1;
                break;
            }
            r++;
            l--;
        }
        if(x==0){
            return true;
        }else{
            return false;
        }
    }
}